import { useParams } from 'common'
import { useRouter } from 'next/router'
import { useEffect } from 'react'
import { buildTableEditorUrl } from '@/components/grid/BrivenGrid.utils'
import { SidePanelEditor } from '@/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor'
import { DefaultLayout } from '@/components/layouts/DefaultLayout'
import { EditorBaseLayout } from '@/components/layouts/editors/EditorBaseLayout'
import { TableEditorLayout } from '@/components/layouts/TableEditorLayout/TableEditorLayout'
import { TableEditorMenu } from '@/components/layouts/TableEditorLayout/TableEditorMenu'
import { NewTab } from '@/components/layouts/Tabs/NewTab'
import { useDashboardHistory } from '@/hooks/misc/useDashboardHistory'
import { useQuerySchemaState } from '@/hooks/misc/useSchemaQueryState'
import { editorEntityTypes, useTabsStateSnapshot } from '@/state/tabs'
import type { NextPageWithLayout } from '@/types'
const TableEditorPage: NextPageWithLayout = () => {
const router = useRouter()
const { ref: projectRef } = useParams()
const tabStore = useTabsStateSnapshot()
const { selectedSchema } = useQuerySchemaState()
const { history, isHistoryLoaded } = useDashboardHistory()
const onTableCreated = (table: { id: number }) => {
router.push(
`/project/${projectRef}/editor/${table.id}${!!selectedSchema ? `?schema=${selectedSchema}` : ''}`
)
}
useEffect(() => {
if (isHistoryLoaded && projectRef && router) {
const lastOpenedTableId = Number(history.editor)
const lastTabId = Number(
tabStore.openTabs.find((id) => editorEntityTypes.table.includes(tabStore.tabsMap[id]?.type))
)
// Handle redirect to last opened table tab, or last table tab
if (Number.isInteger(lastOpenedTableId)) {
const lastOpenedTableData = tabStore.tabsMap[lastOpenedTableId]
router.push(
buildTableEditorUrl({
projectRef,
tableId: lastOpenedTableId,
schema: lastOpenedTableData?.metadata?.schema,
})
)
} else if (Number.isInteger(lastTabId)) {
const lastOpenedTableData = tabStore.tabsMap[lastTabId]
router.push(
buildTableEditorUrl({
projectRef,
tableId: lastTabId,
schema: lastOpenedTableData?.metadata?.schema,
})
)
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isHistoryLoaded, projectRef, router])
return (
<>
>
)
}
TableEditorPage.getLayout = (page) => (
}
product="Table Editor"
productMenuClassName="overflow-y-hidden"
>
{page}
)
export default TableEditorPage